#ifndef __CROSSFIRE_ENGINE_H_
#define __CROSSFIRE_ENGINE_H_

#ifdef CF_CORE_EXPORTS
#define CF_CORE_API __declspec(dllexport)
#else
#define CF_CORE_API __declspec(dllimport)
#endif

#ifndef UNICODE
#define UNICODE
#endif

#ifndef STRICT
#define STRICT
#endif

// lib's
#pragma comment( lib, "winmm.lib" )
#pragma comment( lib, "d3d9.lib" )
#pragma comment( lib, "d3dx9.lib" )
#pragma comment( lib, "d3dx9d.lib" )
#pragma comment( lib, "dinput.lib")
#pragma comment( lib, "dinput8.lib")
#pragma comment( lib, "dsound.lib" )
#pragma comment( lib, "dxguid.lib" )
#pragma comment( lib, "dxerr.lib" )

// base includes
#include <list>
#include <windows.h>
#include <stdio.h>
#include <d3d9.h>
#include <d3dx9.h>

#define RELEASE_COM(p)		{ if(p)	{ (p)->Release(); (p)=NULL;	} }
#define DELETE_POINTER(p)	{ if(p) { delete (p);	  (p)=NULL;	} }
#define DELETE_ARRAY(p)		{ if(p) { delete[] (p);   (p)=NULL; } }

#include "cftypes.h"

#include "ISceneManager.h"
#include "IDrawRenderer.h"
//#include "ISceneNode.h"
#include "ICameraNode.h"
#include "ISkyBoxNode.h"

#include "ILog.h"
#include "ICFGReader.h"
#include "ISettings.h"
#include "ITimer.h"
#include "IObject.h"
#include "IWindow.h"
#include "IInput.h"

#include "IDeviceEngine.h"

namespace cfe
{
	CF_CORE_API ICF_DeviceEngine* getDeviceEngine(void* apphandle);
};


#endif